package cn.caiyj.algorithm.util;

import com.alibaba.fastjson.JSON;

import java.util.concurrent.ThreadLocalRandom;

/**
 * @Description:
 * @author:CAIYJ
 * @Date:2018/10/24 20:31
 */
public class RandomUtil {

    /**
     * 用于随机选的数字
     */
    private static final String BASE_NUMBER = "0123456789";

    /**
     * 用于随机选的字符
     */
    private static final String BASE_CHAR = "abcdefghijklmnopqrstuvwxyz";

    /**
     * 用于随机选的字符和数字
     */
    private static final String BASE_CHAR_NUMBER = BASE_CHAR + BASE_NUMBER;

    /**
     * 获取随机数生成器对象<br>
     * ThreadLocalRandom是JDK 7之后提供并发产生随机数，能够解决多个线程发生的竞争争夺。
     *
     * @return {@link ThreadLocalRandom}
     * @since 3.1.2
     */
    public static ThreadLocalRandom getRandom() {
        return ThreadLocalRandom.current();
    }

    /**
     * 获得随机数
     *
     * @return 随机数
     * @since 3.3.0
     */
    public static long randomLong() {
        return getRandom().nextLong();
    }

    /**
     * 获得指定范围内的随机数 [0,limit)
     *
     * @param limit 限制随机数的范围，不包括这个数
     * @return 随机数
     */
    public static long randomLong(long limit) {
        return getRandom().nextLong(limit);
    }

    public static Long[] randomLongArray(int size, long limit) {
        if (size < 1) {
            return null;
        }
        Long[] array = new Long[size];
        for (int i = 0; i < size; i++) {
            array[i] = randomLong(limit);
        }
        return array;
    }

    public static void main(String[] args) {
        System.out.println(JSON.toJSONString(RandomUtil.randomLongArray(10, 100)));
    }
}
